package city.spring.action.model;

import java.math.BigDecimal;

/**
 * 药品出库的药品信息
 *
 * @author 谢金婷
 * @date 2020/10/26
 */
public abstract class AbstractMedicationRecord<DRUG> {
    /**
     * 当前药品使用次数
     */
    private int drugNumber = 0;

    /**
     * 该药品的唯一Key
     *
     * @return 唯一键值
     */
    public abstract Object getKey();

    /**
     * 该药品的名称
     *
     * @return 名称
     */
    public abstract String getName();

    /**
     * 数量
     */
    public abstract BigDecimal getQuantity();

    /**
     * 获取原始对象
     *
     * @return 原始对象
     */
    public abstract DRUG getObject();

    /**
     * 获取该药品的使用次数
     *
     * @return 使用次数
     */
    public final int getDrugNumber() {
        return drugNumber;
    }

    /**
     * 使用该人
     */
    public final void useDrug() {
        ++drugNumber;
    }

    @Override
    public boolean equals(Object object) {
        if (object instanceof AbstractMedicationRecord) {
            AbstractMedicationRecord<?> Drugdeposit = (AbstractMedicationRecord<?>) object;
            Object key1 = this.getKey();
            Object key2 = Drugdeposit.getKey();
            return key1 != null && key1.equals(key2);
        }
        return false;
    }

    @Override
    public String toString() {
        return String.format("%s(%s/%s)", getName(), getDrugNumber(), getQuantity());
    }
}
